.\"
.\" This file and its contents are supplied under the terms of the
.\" Common Development and Distribution License ("CDDL"), version 1.0.
.\" You may only use this file in accordance with the terms of version
.\" 1.0 of the CDDL.
.\"
.\" A full copy of the text of the CDDL should have accompanied this
.\" source.  A copy of the CDDL is also available via the Internet at
.\" http://www.illumos.org/license/CDDL.
.\"
.\"
.\" Copyright 2018 Joyent, Inc.
.\"
.Dd "August 22, 2018"
.Dt PTHREAD_GETNAME_NP 3C
.Os
.Sh NAME
.Nm pthread_getname_np ,
.Nm pthread_setname_np
.Nd get or set the name of a thread
.Sh SYNOPSIS
.In pthread.h
.
.Ft int
.Fo pthread_getname_np
.Fa "pthread_t tid"
.Fa "char *name"
.Fa "size_t len"
.Fc
.
.Ft int
.Fo pthread_setname_np
.Fa "pthread_t tid"
.Fa "const char *name"
.Fc
.
.Sh DESCRIPTION
The
.Fn pthread_getname_np
and
.Fn pthread_setname_np
functions, respectively, get and set the names of the thread whose id is given
by the
.Fa tid
parameter.
For
.Fn pthread_getname_np ,
.Fa len
indicates the size of
.Fa name .
.Pp
Thread names are limited to
.Dv PTHREAD_MAX_NAMELEN_NP
including the terminating NUL.
They may only contain printable ASCII characters.
.Pp
To clear a thread name, call
.Fn pthread_setname_np
with
.Sy NULL .
.Pp
Unlike some other systems, threads do not inherit the process name by default.
.Sh RETURN VALUES
Upon successful completion, the
.Fn pthread_getname_np
and
.Fn pthread_setname_np
functions return
.Sy 0 .
Otherwise, an error number is returned to indicate the error.
If the thread identified by
.Fa tid
does not have a name set,
.Fa pthread_getname_np
will be set to an empty string (length = 0).
.Sh ERRORS
On failure, the contents of the buffer are undefined.
Errors from
.Xr open 2 ,
.Xr read 2 ,
or
.Xr write 2
are possible.
In addition, the
.Fn pthread_getname_np
function will fail with:
.Bl -tag -width Er
.It Er EINVAL
The
.Fa name
argument is
.Sy NULL .
.It Er ERANGE
The size of
.Fa name
as given by
.Fa len
was not large enough to contain the name of the thread.
.It Er ESRCH
The thread
.Fa tid
was not found.
.El
.Pp
The
.Fn pthread_setname_np
function will fail with:
.Bl -tag -width Er
.It Er ERANGE
The length of
.Fa name
exceeds the maximum allowed size.
.It Er ESRCH
The thread
.Fa tid
was not found.
.El
.Sh INTERFACE STABILITY
.Sy Uncommitted
.Sh MT-LEVEL
.Sy MT-Safe
.Sh SEE ALSO
.Xr pthread_attr_getname_np 3c ,
.Xr pthread_create 3c
